﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Onshi.POS.Modelo.Entidades;
using Onshi.POS.Repositorios;
using Onshi.POS.Usuarios.Vistas;
using Onshi.POS.Modelo.Enumeradores;

namespace Onshi.POS.Usuarios
{
    public class UsuariosInicioSesionPresentador
    {
        #region Constructores

        public UsuariosInicioSesionPresentador(IUsuariosInicioSesion vista)
        {
            this.vista = vista;
        }

        #endregion

        #region Atributos

        private IUsuariosInicioSesion vista;

        #endregion

        #region Propiedades

        private RepositorioUsuarios RepositorioUsuarios
        {
            get { return new RepositorioUsuarios(); }
        }

        private RepositorioEventos RepositorioEventos
        {
            get { return new RepositorioEventos(); }
        }

        private RepositorioRegistros RepositorioRegistros
        {
            get { return new RepositorioRegistros(); }
        }

        #endregion

        #region Metodos

        public void Aceptar()
        {
            var usuario = RepositorioUsuarios.DevolverPorNombre(vista.Nombre);
            if (usuario == null)
                throw new Exception("El usuario no existe");
            if (usuario.EstaEliminado)
                throw new Exception("El usuario se encuentra eliminado");
            if (usuario.Clave != vista.Clave)
                throw new Exception("Contraseña incorrecta");

            var registro = new Registro();
            registro.Usuario = usuario;
            registro.Evento = RepositorioEventos.DevolverPorId((Byte)EnumEventos.UsuariosInicioSesion);
            if (registro.Evento == null)
                throw new Exception("El evento no existe");
            RepositorioRegistros.Insertar(registro, usuario);

            vista.IdUsuario = usuario.Id;
        }

        #endregion
    }
}
